const { User } = require("../model");
const jwt = require("../util/jwt");
const { jwtSecret } = require("../config/config.default");
// 用户登录
exports.login = async (req, res, next) => {
  try {
    // 处理请求

    // res.send("post  /users/login");
    // 1.数据验证
    // 2. 生成token
    let user = req.user;
    user = user.toJSON();
    delete user.password;
    const token = await jwt.sign(
      {
        userId: user._id,
      },
      jwtSecret
    );
    // 3. 发送成功响应（包含token的用户信息）
    // res.status(200).json({ user });
    res.status(200).json({
      ...user,
      token,
    });
  } catch (error) {
    next(error);
  }
};

// 用户注册
exports.register = async (req, res, next) => {
  try {
    // 处理请求
    // 1. 获取请求体数据
    console.log(req.body);
    // 2. 数据验证
    // 2.1 基本数据验证
    // 2.2 业务数据验证
    // 推荐在awesome-nodejs中查找 data validation
    // express-validator

    // 3. 验证通过，将数据保存到数据库中
    let user = new User(req.body.user);
    await user.save();
    // 4. 发送成功响应
    // delete user.password
    user = user.toJSON();
    delete user.password;
    res.status(201).json({
      user,
    });
  } catch (error) {
    next(error);
  }
};

// 获取当前用户
exports.getCurrentUser = async (req, res, next) => {
  try {
    // 处理请求
    // console.log(req.headers);
    // res.send("get  /user");
    res.status(200).json({
      user: req.user,
    });
  } catch (error) {
    next(error);
  }
};

// 更新用户
exports.updateUser = async (req, res, next) => {
  try {
    // 处理请求
    res.send("put  /user");
  } catch (error) {
    next(error);
  }
};
